<template>
  <div>
    <van-nav-bar
      :title="aid ? '编辑地址' : '新增地址'"
      left-text="返回"
      left-arrow
      @click-left="goUpPage"
    />
    <van-address-edit
      :area-list="areaList"
      show-postal
      :show-delete="aid? true:false"
      show-set-default
      show-search-result
      :address-info="initAddress"
      :area-columns-placeholder="['省份', '市区', '区/县']"
      @save="addoredit"
      @delete="deleteAddress"
    />
  </div>
</template>

<script>
import { areaList } from "@vant/area-data";
export default {
  name: "AddAddress",
  data() {
    return {
      //省市联动数据
      areaList,

      // aid 从selectAddress 传送过来的  如果有值传过来 , 那表示是编辑
      aid: "",

      // 默认初始化的值
      initAddress: {},

      // 接收sids  为什么要接受sids 在selectAddress选择地址页面有说明
      sids:"",

      // 接收aa
      aa:""

    };
  },
  created() {
    
    // 接收sids  为什么要接受sids 在selectAddress选择地址页面有说明
    this.sids = this.$route.query.sids;

    // 接收aa判断是从我的页面进入选择地址的还是从结算进入选择地址的
    this.aa = this.$route.query.aa

    // 接收aid 从selectAddress 传送过来的  如果有值传过来 , 那表示是编辑
    this.aid = this.$route.query.aid;
    // 判断this.aid有没有值  如果有, 
    // 那就调用根据aid查询地址数据的接口方法并喧嚷页面
    if (this.aid) {
      this.findAddressByAid();
    }
  },
  methods: {
    // 顶部返回按钮 返回上一页
    goUpPage() {
      this.$router.push({name:"SelectAddress" , query:{sids:this.sids ,aa:this.aa}});
    },

    // 查询传过来的aid查询数据
    findAddressByAid() {
      // let tokenString = this.$cookies.get("TOKEN");
       let tokenString =  localStorage.getItem("TOKEN");

      this.axios({
        method: "get",
        url: "/findAddressByAid",
        params: {
          tokenString,
          aid: this.aid,
        },
      })
        .then((res) => {
          
          if (res.data.code === 40000) {
            // 因为查询信息的接口需要布尔值 将isDefault转为布尔值
            res.data.result[0].isDefault = Boolean(
              res.data.result[0].isDefault
            );
          }
          this.initAddress = res.data.result[0];
          
        })
        .catch((err) => {
          
        });
    },

    // 新增地址接口方法
    Address(e) {
      // e是使用vant自带的方法 save 新增的或者编辑的地址的数据
      
      // 处理e的数据 , 把数据处理成接口需要的格式
      if (e.isDefault) {
        e.isDefault = 1;
      } else {
        e.isDefault = 0;
      }
      // 获取token
      // let tokenString = this.$cookies.get("TOKEN");
       let tokenString =  localStorage.getItem("TOKEN");

      // 添加地址接口数据
      this.axios({
        method: "POST",
        url: "/addAddress",
        data: {
          tokenString,
          name: e.name,
          tel: e.tel,
          province: e.province,
          city: e.city,
          county: e.county,
          addressDetail: e.addressDetail,
          areaCode: e.areaCode,
          postalCode: e.postalCode,
          isDefault: e.isDefault,
        },
      })
        .then((res) => {
          this.$toast(res.data.msg);
          if (res.data.code === 9000) {
            setTimeout(() => {
              this.$router.push({ name: "SelectAddress" , query:{sids:this.sids ,aa:this.aa}});
            }, 1000);
          }
          
        })
        .catch((err) => {
          
        });
    },

    // 编辑地址
    editAddress(e) {
      
      
      // let tokenString = this.$cookies.get("TOKEN");
       let tokenString =  localStorage.getItem("TOKEN");

      this.axios({
        method: "POST",
        url: "/editAddress",
        data: {
          // token
          tokenString,
          aid:this.aid,
          name: e.name,
          tel: e.tel,
          province: e.province,
          city: e.city,
          county: e.county,
          addressDetail: e.addressDetail,
          areaCode: e.areaCode,
          postalCode: e.postalCode,
          isDefault: Number(e.isDefault),
        },
      }).then(res =>{
        
        if(res.data.code === 30000){
          this.$toast(res.data.msg)
          setTimeout(()=>{
            this.$router.push({name:"SelectAddress" ,query:{sids:this.sids, aa:this.aa}})
          },1000)
        }
      }).catch(err =>{
        
      })
    },

    // 给编辑地址页面或者新增地址页面的保存按钮添加方法
    addoredit(e){
      if(this.aid){
        this.editAddress(e)
      }else{
        this.Address(e)
      }
    },

    // 删除地址
    deleteAddress(){
      // 获取登录时存好的token
      // let tokenString = this.$cookies.get("TOKEN")
       let tokenString =  localStorage.getItem("TOKEN");


      // 使用axios调用接口
      this.axios({
        // 接口获取方式
        method: "POST",
        // 接口地址
        url:"/deleteAddress",
        // 接口请求的参数 因为使用的是POSt接口请求方式所以要用data
        data:{
          tokenString,
          aid:this.aid
        }
      }).then(res =>{
        this.$toast(res.data.msg)
        if(res.data.code === 10000){
          setTimeout(()=>{
            this.$router.push({name:"SelectAddress" ,query:{sids:this.sids ,aa:this.aa}})
          },1000)
        }
          
        }).catch(err=>{
          
        })
    }
  },
};
</script>

<style lang="less" scoped>
/deep/ .van-button--danger {
  color: #fff;
  background-color: blue;
  border: 0.02667rem solid blue;
}
</style>